diff --git a/src/routes/(console)/project-[region]-[project]/settings/premiumGeoDBEnableModal.svelte b/src/routes/(console)/project-[region]-[project]/settings/premiumGeoDBEnableModal.svelte index 9edc2b4910..4fb52a373b 100644 --- a/src/routes/(console)/project-[region]-[project]/settings/premiumGeoDBEnableModal.svelte +++ b/src/routes/(console)/project-[region]-[project]/settings/premiumGeoDBEnableModal.svelte @@ -60,10 +60,23 @@ return; } - await sdk.forConsoleIn(page.params.region).projects.confirmAddonPayment({ - projectId: page.params.project, - addonId: paymentAuth.addonId - }); + try { + await sdk.forConsoleIn(page.params.region).projects.confirmAddonPayment({ + projectId: page.params.project, + addonId: paymentAuth.addonId + }); + } catch (e) { + // A 404 here means the Stripe webhook already consumed the invoice + // and activated the addon (race) — the addon is enabled, so sync + // state and assume success rather than surfacing the error. + if ( + e?.type !== 'billing_invoice_not_found' && + e?.type !== 'addon_not_found' && + e?.code !== 404 + ) { + throw e; + } + } await Promise.all([ invalidate(Dependencies.ADDONS),