---
title: "One-time add-on purchase completed"
method: POST
path: "checkout.completed"
---

# One-time add-on purchase completed

`POST checkout.completed` (webhook)

Fired when a one-time Launch Stack or add-on Stripe Checkout session
reaches `complete`. Entitlements are granted before this fires.

## Payload

- object: Base envelope for every webhook event. The `data` shape depends on `type` — see schemas `DomainRegisteredEventData`, `DomainExpiringEventData`, `DomainExpiredEventData`, `SubscriptionCreatedEventData`, `SubscriptionCanceledEventData`, and `CheckoutCompletedEventData`.
  - `id` string, required: Unique event id; useful as an idempotency key.
  - `type` 'checkout.completed', required
  - `created_at` string, date-time, required
  - `livemode` boolean: true in production, false in sandbox.
  - `api_version` string
  - `data` union, required: Fired on one-time add-on / Launch Stack purchase completion.
    - object
      - `domainId` string, required: Internal Domain.id
      - `domain` string, required
      - `userId` string, required
      - `registrar` string, required
      - `registeredAt` string, date-time
      - `expiresAt` string, date-time, required
      - `years` integer
      - `retailPrice` number
      - `currency` string
      - `autoRenew` boolean
      - `privacyEnabled` boolean
      - `nameservers` string[]
      - `checkoutSessionId` string, required
      - `productType` string, required: LAUNCH_STACK | LOGO_PACK | BRAND_KIT | LEGAL_KIT | SOCIAL_MEDIA_KIT | SITE_BUILDER | EMAIL_FORWARDING_SLOT
      - `amount` number, required
      - `paymentIntentId` string
      - `completedAt` string, date-time
    - object
      - `domainId` string, required
      - `domain` string, required
      - `userId` string, required
      - `expiresAt` string, date-time, required
      - `daysUntilExpiry` 30 | 7 | 1, required: 30, 7, or 1 — matches the reminder cadence
      - `autoRenew` boolean
      - `renewalPrice` number
      - `currency` string
      - `checkoutSessionId` string, required
      - `productType` string, required: LAUNCH_STACK | LOGO_PACK | BRAND_KIT | LEGAL_KIT | SOCIAL_MEDIA_KIT | SITE_BUILDER | EMAIL_FORWARDING_SLOT
      - `amount` number, required
      - `paymentIntentId` string
      - `completedAt` string, date-time
    - object
      - `domainId` string, required
      - `domain` string, required
      - `userId` string, required
      - `expiredAt` string, date-time, required
      - `gracePeriodEnds` string, date-time: End of registrar grace period; after this the domain can be lost.
      - `checkoutSessionId` string, required
      - `productType` string, required: LAUNCH_STACK | LOGO_PACK | BRAND_KIT | LEGAL_KIT | SOCIAL_MEDIA_KIT | SITE_BUILDER | EMAIL_FORWARDING_SLOT
      - `amount` number, required
      - `currency` string
      - `paymentIntentId` string
      - `completedAt` string, date-time
    - object
      - `subscriptionId` string, required: Stripe subscription id
      - `userId` string, required
      - `planId` string, required: Prefixed with `founder_` or `agency_` — consumers can branch on the prefix.
      - `status` 'active' | 'trialing', required
      - `currentPeriodStart` string, date-time
      - `currentPeriodEnd` string, date-time, required
      - `cancelAtPeriodEnd` boolean
      - `checkoutSessionId` string, required
      - `productType` string, required: LAUNCH_STACK | LOGO_PACK | BRAND_KIT | LEGAL_KIT | SOCIAL_MEDIA_KIT | SITE_BUILDER | EMAIL_FORWARDING_SLOT
      - `amount` number, required
      - `currency` string
      - `paymentIntentId` string
      - `completedAt` string, date-time
    - object
      - `subscriptionId` string, required
      - `userId` string, required
      - `planId` string
      - `canceledAt` string, date-time, required
      - `reason` 'user_requested' | 'payment_failed' | 'stripe_canceled' | 'admin', nullable
      - `checkoutSessionId` string, required
      - `productType` string, required: LAUNCH_STACK | LOGO_PACK | BRAND_KIT | LEGAL_KIT | SOCIAL_MEDIA_KIT | SITE_BUILDER | EMAIL_FORWARDING_SLOT
      - `amount` number, required
      - `currency` string
      - `paymentIntentId` string
      - `completedAt` string, date-time
    - object: Fired on one-time add-on / Launch Stack purchase completion.
      - `checkoutSessionId` string, required
      - `userId` string, required
      - `productType` string, required: LAUNCH_STACK | LOGO_PACK | BRAND_KIT | LEGAL_KIT | SOCIAL_MEDIA_KIT | SITE_BUILDER | EMAIL_FORWARDING_SLOT
      - `amount` number, required
      - `currency` string
      - `paymentIntentId` string
      - `completedAt` string, date-time

## Acknowledgement `200`

Acknowledged

---

[API](https://skmtc.dev/namemy/apis/namemy-app-api.md) · [All operations](https://skmtc.dev/namemy/apis/namemy-app-api/llms.txt) · [OpenAPI document](https://skmtc.dev/namemy/apis/namemy-app-api/revisions/1c302ede4b63?raw)
