Significant-Gravitas/AutoGPT · error · HTTPException
Tier change unavailable for your current billing currency. P
Error message
Tier change unavailable for your current billing currency. Please contact support — the target tier needs to be configured for your currency in Stripe before this change can go through.
What it means
HTTP 422 raised when modifying a subscription schedule fails because phases mix currencies - e.param == 'currency' or 'currency' appears in the message. Typical case: the active subscription was checked out in a non-USD currency (e.g. GBP) but the target tier's Stripe Price is USD-only, so Stripe rejects the schedule; the substring fallback also covers older error shapes where param is 'phases' or absent.
Source
Thrown at autogpt_platform/backend/backend/api/features/v1.py:1264
e,
)
raise HTTPException(
status_code=402,
detail=(
"No payment method on file. The plan was not changed;"
" please add a payment method and try again."
),
)
# Stripe rejects schedule modify when phases mix currencies, e.g. the
# active sub was checked out in GBP but the target tier's Price is
# USD-only. e.param is "currency" on the schedule API but may be
# "phases" or absent on older error shapes — substring fallback keeps
# the 422 firing instead of dropping to the generic 502.
if e.param == "currency" or "currency" in msg_lower:
logger.warning(
"Currency mismatch on tier change for user %s: %s", user_id, e
)
raise HTTPException(
status_code=422,
detail=(
"Tier change unavailable for your current billing currency."
" Please contact support — the target tier needs to be"
" configured for your currency in Stripe before this"
" change can go through."
),
)
logger.exception(
"Stripe error modifying subscription for user %s: %s", user_id, e
)
raise HTTPException(
status_code=502,
detail=(
"Unable to update your subscription right now. "
"Please try again or contact support."
),
)View on GitHub (pinned to 9c8bb5550f)
Solutions
- Contact support / ops to configure the target tier's price for the user's billing currency in Stripe and the flags
- Alternatively cancel and re-checkout in a currency the target tier supports (changes billing immediately)
- Operators: audit that every purchasable tier has prices in every currency you allow at checkout
Defensive patterns
Strategy: fallback
Validate before calling
const status = await api.getSubscriptionStatus(); if (status.currency && !tierSupportsCurrency(req.tier, status.currency)) warnUserBeforeSubmit();
Try / catch
try { await api.setSubscription(req); }
catch (e) {
if (e.status === 422 && /billing currency/.test(e.detail)) showCurrencySupportNotice();
else throw e;
} Prevention
- Surface the user's billing currency in the upgrade UI
- Operators: keep per-currency price maps in sync with Stripe
When it happens
Trigger: User whose active subscription bills in GBP/EUR requests a tier whose configured LD price exists only in USD (or vice versa); Stripe refuses to build a schedule whose phases change currency.
Common situations: Multi-currency rollout gaps: prices configured for some currencies only; users who originally checked out via a localized currency; a price flag pointing at the wrong currency's price ID.
Related errors
- success_url and cancel_url are required for paid tier upgrad
- str(e)
- Unable to cancel the pending subscription change right now.
- Unable to cancel your subscription right now. Please try aga
- Subscription not available for tier {tier.value}
AI-assisted analysis of Significant-Gravitas/AutoGPT@9c8bb5550f (2026-08-14).
Data as JSON: /api/errors/7cf567bbb94872e8.
Report an issue: GitHub.