If checkout shows errors like "Payment not approved" or similar, try converting the short payment link into the full URL version first.
-
Open the checkout page
-
Press
F12 -
Go to
Console -
Type
allow pastingand press Enter if Chrome blocks paste -
Paste the code below and press Enter
Remember to adjust the coupon code and currency in the code based on your country/region.
(async function generateAUTeamLink() { console.log("Getting session token...");
let accessToken;
try {
const s = await fetch("/api/auth/session").then(r => r.json());
accessToken = s?.accessToken;
if (!accessToken) throw new Error("accessToken is empty");
} catch (e) {
console.error("Failed to get token:", e.message);
return;
}
console.log("Token OK");
const COUPON = "thealloynetwork";
const payload = {
plan_name: "chatgptteamplan",
team_plan_data: {
workspace_name: "workspace",
price_interval: "month",
seat_quantity: 2
},
billing_details: {
country: "US",
currency: "USD"
},
cancel_url: "https://chatgpt.com/?promoCode=thealloynetwork",
promo_code: COUPON,
checkout_ui_mode: "hosted"
};
console.log("Requesting Stripe checkout URL...");
try {
const resp = await fetch(
"https://chatgpt.com/backend-api/payments/checkout",
{
method: "POST",
headers: {
Authorization: "Bearer " + accessToken,
"Content-Type": "application/json"
},
body: JSON.stringify(payload)
}
);
const data = await resp.json();
if (!resp.ok) {
console.error("Request failed HTTP " + resp.status);
console.log("Response:", data);
return;
}
const hostedUrl = data.url || data.stripe_hosted_url ||
data.checkout_url;
if (!hostedUrl) {
console.warn("No URL found in response:", data);
return;
}
console.log("Success! ChatGPT Team checkout link:");
console.log("Session ID:", data.checkout_session_id);
console.log("Seats:", payload.team_plan_data.seat_quantity);
console.log("Coupon:", COUPON);
console.log("URL:", hostedUrl);
} catch (e) {
console.error("Network error:", e.message);
}
})();