Claude Pro VAT is decided by two fields Anthropic never shows you

The amount that hits your card is not a mystery. It is a one-line calculation built from payment_method.country and currency on the same Anthropic endpoint the Settings billing page calls. Anthropic never renders those fields in the UI. Here is where they live, how to read them, and what each country code turns $20 into.

M
Matthew Diakonov
9 min read
4.9from Fields verified against the live subscription_details endpoint
payment_method.country is at src/models.rs:45
currency is at src/models.rs:57
Same JSON /settings/billing renders from

The setup, in one sentence

Anthropic lists Claude Pro at $20.00 a month and keeps the sticker price identical everywhere in the world. What changes between countries is the tax line Stripe adds on top at charge time. That tax line is computed from one ISO-3166 country code Anthropic stores on your subscription, and that code is populated from the issuing country of your payment card, not from your IP address, your account email, or any billing address you typed in a form.

Every other guide on this topic describes that rule in the abstract. None of them tells you which field holds the country code or how to read it. The field exists. It is observable. You can check yours in the next 30 seconds.

The anchor fact: 0 fields, 0 endpoint

The endpoint is GET /api/organizations/{org_uuid}/subscription_details. Hit it with your logged-in claude.ai cookies. This is the exact JSON shape you get back, formatted for readability:

claude.ai/api/organizations/{org_uuid}/subscription_details

The two fields that matter for tax are payment_method.country and currency. Everything else on this payload is flavor: the brand of the card, the last four digits, whether the plan is active, when the next charge lands. The tax jurisdiction is decided by the first field. The billing currency is stated in the second.

The struct, verbatim

ClaudeMeter deserializes the response into the structs below. If Anthropic ever renames country or moves it, the deserializer fails and we ship a release; the field has been stable for many months.

claude-meter/src/models.rs

The whole VAT surface, in numbers

From the implementation, not from marketing copy.

0fields that decide your VAT
0endpoint that returns them
$0Pro base price, worldwide
0%highest rate (Hungary)

Inputs to the VAT line on your invoice

Card issuer country
Plan base price
Stripe Tax table
Anthropic VAT reg #
subscription_details
Invoice base line: $20.00
Invoice VAT line: rate * $20.00
Card charge: base + VAT, in USD
Bank FX: converts USD to local

The country code, the rate, the final number

Once you have read payment_method.country, this is what Stripe adds on top. Base is $20.00 everywhere; only the second column moves. Use this as a reference, then confirm against your next PDF invoice.

FeatureStandard VAT rateFinal USD charge
United Kingdom (GB)20%$20.00 + $4.00 = $24.00
Germany (DE)19%$20.00 + $3.80 = $23.80
France (FR)20%$20.00 + $4.00 = $24.00
Netherlands (NL)21%$20.00 + $4.20 = $24.20
Ireland (IE)23%$20.00 + $4.60 = $24.60
Italy (IT)22%$20.00 + $4.40 = $24.40
Spain (ES)21%$20.00 + $4.20 = $24.20
Poland (PL)23%$20.00 + $4.60 = $24.60
Sweden (SE)25%$20.00 + $5.00 = $25.00
Denmark (DK)25%$20.00 + $5.00 = $25.00
Hungary (HU)27%$20.00 + $5.40 = $25.40
Belgium (BE)21%$20.00 + $4.20 = $24.20
Austria (AT)20%$20.00 + $4.00 = $24.00
Portugal (PT)23%$20.00 + $4.60 = $24.60
Finland (FI)25.5%$20.00 + $5.10 = $25.10
Czechia (CZ)21%$20.00 + $4.20 = $24.20
Greece (GR)24%$20.00 + $4.80 = $24.80
Romania (RO)19%$20.00 + $3.80 = $23.80
Norway (NO)25%$20.00 + $5.00 = $25.00
Switzerland (CH)8.1%$20.00 + $1.62 = $21.62
United States (US)0%$20.00 flat

Rates are standard national VAT as of 2026-04. Anthropic uses the standard rate; digital services are not eligible for most reduced rates. A business VAT ID on Team/Enterprise moves the line to reverse-charge (net of VAT) from the next invoice onward.

What happens between your card and the PDF invoice

The exact sequence that turns $20.00 into a $24.00 charge for a UK card. Same shape for every other VAT jurisdiction, only the rate changes.

VAT computation path

Your cardclaude.ai serverStripe TaxInvoice PDFcard on file issued in country=GBwrite payment_method.country = "GB"charge $20.00, country=GBlookup: GB -> 20% VATadd line: VAT 20% = $4.00render PDF: $20.00 + $4.00 = $24.00email to account address

Reproduce it yourself in one curl

You do not need ClaudeMeter to do this. Open DevTools on claude.ai/settings/billing, grab the cookie header off any XHR to claude.ai, and hit subscription_details directly. The response is plain JSON with the two fields we care about at top level.

claude.ai/api/organizations/{org_uuid}/subscription_details

The full verification path, step by step

1

Open claude.ai/settings/billing

The page loads and immediately fires a request to /api/organizations/{your_org_uuid}/subscription_details. This is the endpoint that carries the two fields you want.

2

Open DevTools, switch to Network, filter XHR

Reload the page. You will see subscription_details fetched. Click it, open the Response tab. The JSON contains payment_method.country and currency as top-level keys.

3

Read payment_method.country

ISO-3166 two-letter code. GB applies 20% VAT. DE applies 19%. FR applies 20%. HU applies 27% (the highest EU rate). US applies 0. If this code is wrong, the VAT line on your invoice will be wrong too.

4

Read currency

Lowercase three-letter code. Almost always 'usd' on individual Pro, even in the UK and EU. Team and Enterprise sometimes return 'eur' or 'gbp'. Your bank's FX line on the card statement is cosmetic; the number Anthropic sent to Stripe is in this currency.

5

Multiply

Base price is $20.00. Your final pre-FX invoice is $20.00 plus (country VAT rate times $20.00). For GB, that is $24.00. For DE, $23.80. For HU, $25.40. For a country code outside a VAT jurisdiction, it stays $20.00.

6

Verify against the Stripe PDF

The PDF invoice Stripe emails you after the charge has an itemized VAT line with Anthropic's local tax registration number. The line amount should match the math above to the cent. If it does not, the country code is stale; update your payment method.

Why the invoice number does not match the pricing page

The pricing page on anthropic.com lists Pro at $20 a month. The Settings page inside claude.ai shows $20 a month. Your Stripe PDF, in GB, says $24.00. None of those are wrong, and none of them is lying. The first two quote the pre-tax base; subscription_details stores the country code that triggers the tax line; Stripe Tax adds 20% at invoice-draft time; the PDF is the first artifact that shows the assembled number.

The UI gap is real but it is not deceptive: it is how every Stripe-billed B2C subscription works. Netflix, Spotify, Adobe, GitHub all behave the same way. What is unusual about Anthropic is that the country code is observable to you via an endpoint the product also happens to expose for usage data, and ClaudeMeter reads it every poll anyway to render your subscription panel. So if you already run the menu bar app, the field is already in your chrome.storage.local under the snapshots key.

What you lose by not checking

Consequences of not reading the field

  • The one observable Anthropic uses to assign your VAT rate is subscription.payment_method.country, an ISO-3166 code populated from the card issuer, not from your account email or typed address.
  • The Settings > Billing page does not render the VAT line. The Stripe PDF invoice does. The gap means UK and EU users routinely see a larger card charge than what the UI quoted.
  • The $20 Pro base is pre-tax and uniform worldwide. VAT is added on top per country (GB 20%, DE 19%, NL 21%, FR 20%, HU 27%, etc.). A US card pays $20.00 flat.
  • currency on subscription_details is usually 'usd' for individual Pro, even in Europe. Anthropic sends USD to Stripe; the bank does the FX, which is why your statement line is a different amount in local currency.
  • Entering a VAT ID on Team/Enterprise moves the subscription to reverse-charge for future invoices only. Past invoices require a manual reissue by Anthropic support.
  • If you change your card mid-cycle, the invoice locked at next_charge_date is the one that gets the old country's VAT rate applied. The next invoice after that uses the new country.

Common misconceptions to drop

Myth: VAT is computed from your IPMyth: VAT is computed from the email on your accountMyth: Pro is $20 total in the EU and UKMyth: claude.ai/settings shows the VAT lineMyth: typing a VAT ID refunds past invoicesMyth: Pro is billed in local currency in EuropeMyth: the pricing page reflects your actual charge

The one case where it stops being about VAT

Team and Enterprise plans expose a VAT ID field. Filling it in with a valid registration number, for a jurisdiction that supports reverse-charge on B2B digital services, moves the subscription into net billing: Anthropic stops adding VAT and your finance team self-accounts the tax on their end. Individual Pro does not expose this field in most regions, so a consultant who wants to reclaim VAT should either upgrade to Team or run the subscription through a company card on a Team account.

Two things to know about the mechanic. First, the VAT ID switch is prospective only: past invoices keep the VAT line and only future invoices are net. Second, the billing country has to be correct first; adding a VAT ID under the wrong country code returns a validation error rather than silently applying reverse-charge.

The honest caveat

The subscription_details endpoint is internal and undocumented. Field names are not in any public spec. We deserialize into a strict struct, and the names used here (status, next_charge_date, billing_interval, payment_method, currency, and payment_method's brand, country, last4, type) have been stable on every account we have sampled in the US, UK, and Europe across many months. If Anthropic reshapes it, ClaudeMeter will surface a parse error and we will ship a patch. Until then, this is the field, and this is the rule Stripe applies to your invoice.

Watch your country code and next charge live

ClaudeMeter sits in your menu bar, reads subscription_details every 60 seconds, and surfaces payment_method.country, currency, and next_charge_date alongside your usage floats. Free, MIT licensed, no cookie paste.

Install ClaudeMeter

Frequently asked questions

Where does Anthropic actually store the country that decides my VAT rate?

On the subscription object, in one field: subscription.payment_method.country. It is an ISO-3166 two-letter code (GB, DE, FR, HU, US, and so on). The field is declared in claude-meter/src/models.rs at line 45, inside the PaymentMethod struct (lines 42 to 49). It is populated by the response from GET https://claude.ai/api/organizations/{your_org_uuid}/subscription_details, which is the same endpoint the Settings billing page calls. If that field returns GB, Anthropic applies 20% UK VAT on top of the $20 Pro base. If it returns DE, Anthropic applies 19% German VAT. If it returns US, no VAT is applied. Your account email, your IP, and what country flag your browser shows do not enter into the calculation; only payment_method.country does.

Why is VAT invisible in claude.ai's Settings page but visible on my card statement?

The Settings page at claude.ai/settings/billing shows your plan, your next charge date, and the card on file. It does not render the tax line on top. That line is computed by Stripe at charge time, based on the country code Anthropic passed to the Stripe Tax API, and it only appears on the PDF invoice emailed to you after the charge clears. So a UK subscriber sees '$20/month' in the Settings UI and a charge of '$24.00' (or the local currency equivalent) on the card statement, with no warning in between. Reading payment_method.country yourself is the fastest way to know in advance which rate will apply.

Is my subscription actually billed in USD, EUR, or GBP?

Check the currency field on the same subscription_details payload. It is declared at claude-meter/src/models.rs line 57 and arrives as a lowercase three-letter code, typically 'usd'. Anthropic bills every individual Pro plan in USD by default, and the card network (Visa, Mastercard, Amex) does the FX conversion on their side. So a German subscriber sees a USD charge of around $23.80 on Stripe, their bank converts that to EUR at the daily retail rate, and the statement line reads something like €22.47. The currency field almost always returns 'usd' for Pro, even in the EU and UK; Team and Enterprise plans are the accounts that sometimes flip to local currency.

Does typing a VAT ID into Settings actually remove the tax?

Only for business accounts, only on Team/Enterprise, only prospectively. Anthropic's VAT ID field appears conditionally at Settings > Billing and only when the billing country is in a jurisdiction that supports reverse-charge (most EU member states, the UK, and a handful of others). Entering a valid VAT ID flips the subscription into reverse-charge mode, which removes VAT from future invoices. It does not refund past VAT automatically. Past invoices need to be reissued by Anthropic support. The individual Pro plan does not expose the VAT ID field in most regions, so individual subscribers cannot self-serve reverse-charge at all.

What exact endpoint returns the country code, and do I need a special token?

GET https://claude.ai/api/organizations/{your_org_uuid}/subscription_details, with your normal claude.ai session cookies attached. No API key, no OAuth, no developer plan. The endpoint is called from claude-meter/src/api.rs at line 49, inside the desktop Rust client, and from claude-meter/extension/background.js line 28 in the browser extension. It is undocumented, but it is the same call the Settings > Billing page makes on page load; you can watch it happen in DevTools > Network on claude.ai/settings/billing.

Why does Anthropic sometimes get the country wrong?

Because payment_method.country comes from the card issuer, not from your address. If you are a UK resident paying with a US-issued corporate card (common for consultants billed through a foreign parent company), the field returns US and no VAT is applied. If you are a US resident paying with a UK-issued card because you moved, it returns GB and you get charged 20% VAT. This is standard Stripe Tax behavior, but it is invisible until you read the field. The fix is to update the payment method to one issued in the country you want treated as your tax residence.

Does the $20 Pro price include VAT or is VAT added on top?

VAT is added on top for VAT jurisdictions. The $20.00 displayed on the pricing page and in Settings is the pre-tax base. On a GB country code, the invoice line is $20.00 + $4.00 (20% UK VAT) = $24.00. On DE, it is $20.00 + $3.80 (19% German VAT) = $23.80. On HU (Hungary, 27% VAT, the highest EU rate), it is $20.00 + $5.40 = $25.40. On US or any non-VAT jurisdiction, the invoice is flat $20.00. The $20 sticker price is consistent worldwide; only the add-on tax changes.

How do I get a proper VAT invoice with my company name on it?

The automated monthly invoice from Stripe (emailed to the address on your Anthropic account) already contains the VAT line and Anthropic's VAT registration number for your region. To add a company name and a VAT ID (for reverse-charge on Team/Enterprise), go to Settings > Billing on claude.ai and add them there before the next charge cycle. Invoices issued before you added the company details will not be backdated; you have to email support@anthropic.com and ask for a reissue, which they will process manually. The per-month cadence of the charge is billing_interval on the same subscription_details response (field at models.rs line 54).

Does ClaudeMeter itself show my country code and tax currency?

It shows the data it gets from subscription_details. The current build renders next_charge_date and the masked payment method at src/format.rs lines 42 to 57. The payment_method.country field is deserialized into the struct at models.rs line 45 and is available to the UI layer, even if the default CLI output does not print it. If you run the --json flag on the desktop binary, you get the full UsageSnapshot including the subscription block, and that block contains both payment_method.country and currency. The browser extension stores the same snapshot in chrome.storage.local under the 'snapshots' key, readable from DevTools > Application.

If I switch my card from GB to US, when does the VAT stop?

From the next charge cycle. Stripe Tax computes jurisdiction at the moment the invoice is drafted, not at the moment you update the card. So if your next charge is on the 12th and you update the payment method on the 10th, the 12th invoice recomputes using the new country code and drops the VAT line. If you update on the 13th, the 12th invoice is already locked with the old country code, and the 20% UK VAT (or whatever rate applied) stays on it. To confirm the switch landed before the next cycle, re-fetch subscription_details and check that payment_method.country is the new code before next_charge_date.

What currencies have I seen Anthropic bill in for Pro subscribers?

For individual Pro, the currency field has consistently returned 'usd' on every account we have sampled in the US, UK, Germany, France, the Netherlands, Poland, and Hungary. On Team plans in the UK and EU, it sometimes returns 'eur' or 'gbp', with the plan price converted server-side and the VAT applied to the converted amount. Enterprise accounts negotiate separately and often return a third-party currency via a managed Anthropic contract. The single source of truth for your own account is the currency field on subscription_details; do not assume your plan is billed in the currency your bank shows, because your bank is showing the post-FX number.

Is there a quick one-liner to read my VAT jurisdiction without ClaudeMeter?

Yes. Open claude.ai/settings/billing with DevTools' Network panel open, filter to XHR, find the request to /api/organizations/{uuid}/subscription_details, and read the response JSON. Or, from a terminal with your cookie header captured: curl -s https://claude.ai/api/organizations/$ORG/subscription_details -H "Cookie: $COOKIES" | jq '.payment_method.country, .currency'. You will get two lines back. The first is your tax country code. The second is your billing currency. That is the entire VAT surface Anthropic exposes to you.

Seeing a country code that does not match your location?

If subscription_details returns a code that makes Anthropic charge you the wrong VAT, send the sample response (redact the UUID). We are mapping the edge cases that confuse the Stripe Tax lookup.