AWS Support and Billing Pain: A Checked Guide for EU Teams
Short answer (checked 2026-11-02): On AWS, the free Basic plan covers account and billing questions but no technical cases. Paid support now starts with Business Support+ at the greater of $29 a month or 9% of your AWS charges, and the old Developer and Business plans end on 1 January 2027. Billing data is not live: Cost Explorer refreshes at least once every 24 hours and AWS Budgets up to three times a day, so an alert can arrive after the money is spent. Egress from Frankfurt costs $0.09 per GB after a global 100 GB a month. If your stack is a few servers, a database and steady traffic, a flat-priced European provider with human support is often the simpler fit; if you depend on managed AWS services, the fix is guard rails, not a migration.
Where this comes from. Two r/aws threads from 2026-11-02: a business that has tried the sales forms, the AI chat and every other channel for more than three weeks without a reply (thread), and "AWS billing systems have forgotten how to count", a few-cent free-tier puzzle on an Aurora DSQL bill (thread). We read both threads and checked the AWS pages behind them. No quotes or numbers below come from the threads except where we say so.
What the two threads actually show
Sales that does not answer. The poster, a business in Southeast Asia, needs certain services enabled on its account and was told that only sales can help. After more than three weeks of contact forms and AI chat there was no acknowledgement. The first reply in the thread asked what the questions were: the community answers a lot, but it cannot enable services on someone else's account.
A bill that does not add up. The screenshot shows the Aurora DSQL line: 93,977.04 DPU under "$0.00 per DPU for the first 100k DPUs" and 2,894,771.278 DPU billed at $0.0000095 per DPU in EU (Ireland). The free tier on the Aurora DSQL pricing page is 100,000 DPUs a month, so about 6,023 DPU, roughly 6 cents at that rate (our arithmetic), went to the paid line. A commenter pointed out that the free usage is shared across regions; the poster replied that the other region had no usage. The page says that in AWS Organizations the free tier applies per management account. The amount is trivial. The lesson is not: free-tier allocation is not something you can recompute from the bill alone.
SES approval waits. The third complaint that keeps coming back on r/aws is the email sandbox. The SES documentation is clear about it: a new account can send only to verified addresses, at most 200 messages per 24 hours and 1 per second, per region, until you request production access. AWS Support "provides an initial response to your request within 96 hours", and longer if they need more information. Four days is a release-planning fact, not a bug.
AWS support plans in November 2026
AWS changed its plans on 2 December 2025. The current list on the AWS Support pricing page (checked 2026-11-02):
| Plan | Monthly fee | Fastest response (from the plans page) |
|---|---|---|
| Basic | Included | No technical cases; account, billing and quota cases only |
| Business Support+ | Greater of $29 or 9% to $10K, 7% to $80K, 5% to $250K, 3% above | Under 30 min, business-critical system down |
| Enterprise Support | Greater of $5,000 or 10% to $150K, 7% to $500K, 5% to $1M, 3% above | Under 15 min, business-critical system down |
| Unified Operations | Greater of $50,000 or 10% to $1M, 6% to $5M, 5% above | Under 5 min, from an incident management engineer |
Three things are easy to miss:
- The old plans end on 1 January 2027. Developer and Business Support stopped taking new sign-ups on 2 December 2025 and are discontinued on 1 January 2027 (end-of-support page). The FAQ says Business accounts are not moved to Business Support+ automatically, and a Developer customer who does nothing falls back to Basic. Enterprise On-Ramp customers are being upgraded to Enterprise Support during 2026.
- Support is a percentage of the whole bill. Egress and public IPv4 charges raise the support fee too.
- Response is not resolution. The times above are first responses, and AWS says it "will make every reasonable effort" to meet them. Sales questions, like the one in the first thread, are not covered by any support SLA.
Why the bill arrives after the money is spent
Every AWS cost tool sits on the same delayed billing data:
- Cost Explorer "refreshes your cost data at least once every 24 hours", and some data can come later (Cost Explorer guide). The console is free; each paginated API request costs $0.01.
- AWS Budgets is "updated up to three times a day", typically 8 to 12 hours apart, and AWS warns that you "might incur additional costs or usage that exceed your budget notification threshold" before the notice arrives (Budgets guide).
- Cost Anomaly Detection runs about three times a day on Cost Explorer data, so it "can take up to 24 hours to detect an anomaly", and a new service needs 10 days of history first (anomaly guide).
So a runaway job on Friday evening can run for most of a day before anyone is told. Budgets are a smoke alarm, not a circuit breaker.
Price the hidden lines yourself: aws_bill_check.js
Two lines surprise EU teams most: internet egress and public IPv4. AWS publishes both in its public Price List, which needs no account. This script reads the Frankfurt data transfer file, applies the global free 100 GB and the tiers, adds $0.005 per public IPv4 per hour (VPC pricing) for 730 hours, and then the support fee for the new plans. Save it as aws_bill_check.js:
// aws_bill_check.js - what egress, public IPv4 and a paid support plan add to an AWS bill
// usage: bun aws_bill_check.js <other_usd_month> <egress_tb_month> <public_ipv4> [price.json]
// price.json = AWS Price List file for AWSDataTransfer in eu-central-1 (public, no account needed)
const [base, tb, ips, file = 'dt-eu-central-1.json'] = process.argv.slice(2)
const j = await Bun.file(file).json()
const tiers = [] // [beginGB, endGB, usdPerGB] for internet egress from Frankfurt
let freeGB = 0
for (const [sku, p] of Object.entries(j.products)) {
const u = p.attributes.usagetype
if (u !== 'EUC1-DataTransfer-Out-Bytes' && u !== 'Global-DataTransfer-Out-Bytes') continue
for (const o of Object.values(j.terms.OnDemand[sku]))
for (const d of Object.values(o.priceDimensions)) {
if (u.startsWith('Global')) freeGB = +d.endRange
else tiers.push([+d.beginRange, d.endRange === 'Inf' ? Infinity : +d.endRange, +d.pricePerUnit.USD])
}
}
tiers.sort((a, b) => a[0] - b[0])
// tiered fee: rates = [[upToUSD, share], ...], the plan charges the larger of min and the sum
const tiered = (usd, min, rates) => {
let fee = 0, from = 0
for (const [to, r] of rates) { fee += Math.max(0, Math.min(usd, to) - from) * r; from = to }
return Math.max(min, fee)
}
// aws.amazon.com/premiumsupport/pricing/, checked 2026-11-02
const bsPlus = usd => tiered(usd, 29, [[10e3, .09], [80e3, .07], [250e3, .05], [Infinity, .03]])
const enterprise = usd => tiered(usd, 5000, [[150e3, .10], [500e3, .07], [1e6, .05], [Infinity, .03]])
let gb = Math.max(0, +tb * 1024 - freeGB), egress = 0 // the price list counts 1 TB = 1024 GB
for (const [b, e, usd] of tiers) { egress += Math.max(0, Math.min(gb, e - b)) * usd; gb -= Math.min(gb, e - b) }
const ipv4 = +ips * 0.005 * 730 // aws.amazon.com/vpc/pricing/: $0.005 per IP-hour, 730 h a month
const aws = +base + egress + ipv4
const row = (k, v) => console.log(k.padEnd(34), ('$' + v.toFixed(2)).padStart(11))
console.log(`price list ${j.publicationDate.slice(0, 10)}, free ${freeGB} GB, tiers ${tiers.map(t => t[2]).join(' / ')} $/GB`)
row('compute, storage, other (input)', +base)
row(`egress ${tb} TB to the internet`, egress)
row(`public IPv4 x ${ips}`, ipv4)
row('AWS charges before support', aws)
row('+ Business Support+ (min $29)', bsPlus(aws))
row('+ Enterprise Support (min $5,000)', enterprise(aws))
row('total with Business Support+', aws + bsPlus(aws))
curl -sLo dt-eu-central-1.json https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AWSDataTransfer/current/eu-central-1/index.json
bun aws_bill_check.js 6000 40 10
Output, run on a DCXV Cloud server with Bun 1.4.4 on 2026-11-02 (the inputs are an example: $6,000 of other services, 40 TB of egress, 10 public IPv4):
price list 2026-09-16, free 100 GB, tiers 0.09 / 0.085 / 0.07 / 0.05 $/GB
compute, storage, other (input) $6000.00
egress 40 TB to the internet $3524.30
public IPv4 x 10 $36.50
AWS charges before support $9560.80
+ Business Support+ (min $29) $860.47
+ Enterprise Support (min $5,000) $5000.00
total with Business Support+ $10421.27
In this example egress is 37% of the bill before support, and because Business Support+ is a share of the whole bill, the egress also adds about $317 a month of support fee. Put your own numbers in: the script prints the price list date, so you can see when AWS last changed it. Prices exclude VAT.
Protect yourself on AWS this week
- Decide on your support plan before 1 January 2027. If you are on Developer or Business Support, check the console now; nobody will move you to Business Support+ by default.
- Set two budgets, not one. A monthly cost budget with alerts at 50%, 80% and 100% of actual spend, plus a forecast alert. Send them to a shared mailbox or an SNS topic, never one person.
- Turn on Cost Anomaly Detection and remember the 24-hour lag. For things that can burn money in hours (GPU instances, NAT gateways, open S3 buckets), put a hard limit in the service itself: quotas, auto scaling maximums, lifecycle rules.
- Run the egress math before launch. A media, backup or AI-inference workload can make egress the largest line, as the example shows. EU customers can also ask AWS Support about reduced transfer rates under the European Data Act for eligible cases, as the EC2 pricing page notes.
- Plan for queues you do not control. Request SES production access at least a week before you need it, and open quota and account cases early. For sales, a partner or reseller is often faster than the web form.
- Keep billing evidence. For a disputed line, export the Cost and Usage data and open an account and billing case: Basic includes those, so a wrong charge never needs a paid plan.
When a European flat-priced provider fits better
AWS is the right tool when you use its managed catalogue: Lambda, DynamoDB, SQS, Bedrock, global regions. The pain in these threads is a different case: a small team that needs a server, a person to talk to and a bill it can predict.
| Question | Points to AWS | Points to a flat-priced EU provider |
|---|---|---|
| What does the stack use? | Many managed services | VMs, a database, containers |
| How does traffic grow? | Mostly inside AWS | Out to users, steadily |
| Who answers at 3 a.m.? | Your own on-call, plus a paid plan | The provider's engineers, included |
| How is the bill read? | Cost Explorer, tags, 24 h lag | One monthly price per server |
| Where must data live? | An EU region is enough | An EU company and EU sites |
DCXV runs cloud servers and dedicated servers in Tier III data centres in Prague and Covilha. The price is per server and month (cloud from EUR 15 for 2 vCPU, 4 GB RAM and 40 GB NVMe, excl. VAT), with unlimited traffic on a shared 1 Gbit/s port, so there is no per-GB line, and 24/7 support by engineers is included at every tier. What you give up: no managed-service catalogue and two sites instead of thirty-plus regions. Our AWS alternative page maps EC2 sizes to plans, the AWS vs dedicated server cost comparison runs the full numbers, and the migration guide covers the move. Send your aws_bill_check.js output to sales@dcxv.com and a person will reply with a sized quote.
