> For the complete documentation index, see [llms.txt](https://developer.paddle.com/llms.txt).

# Subscription created scenario

Simulates all events that occur when a subscription is created via checkout.

---


This page describes a webhook scenario with configurable inputs. Each event below lists the conditions under which it fires; combine the per-step and per-event conditions to determine what fires for any given configuration.

## Configuration

- **Customer** (`customer_simulated_as`) — `new` *(default)*, `existing_email_matched` (Existing - entered at checkout), or `existing_details_prefilled`. Whether the simulated subscription is for a new customer, an existing customer, or an existing customer with details prefilled.
- **Business** (`business_simulated_as`) — `not_provided` *(default)*, `new`, or `existing_details_prefilled`. Whether to simulate if a new, existing, or no business is provided at checkout.
- **Discount** (`discount_simulated_as`) — `not_provided` *(default)*, `entered_by_customer`, or `prefilled`. Whether to simulate if a discount is entered, prefilled, or not provided at checkout.
- **Subscription trials** (`trial_period_on_price`) — `false` *(default)* or `true`. Whether to simulate if prices in the transaction items have a trial period.

## Events

### Customer opens checkout

- [`transaction.created`](/webhooks/transactions/transaction-created) — *When Customer is not "Existing - details prefilled" and Business is not "Existing - details prefilled" and Discount is not "Prefilled":* Paddle creates a transaction for the items on the checkout. Its status is initially `draft`. Its origin is `web`.
- [`transaction.created`](/webhooks/transactions/transaction-created) — *When Customer is "Existing - details prefilled" and Business is not "Existing - details prefilled" and Discount is not "Prefilled":* Paddle creates a transaction for the items on the checkout. It contains details of the customer passed to Paddle.js and prefilled at checkout. Its status is initially `draft`. Its origin is `web`.
- [`transaction.created`](/webhooks/transactions/transaction-created) — *When Business is "Existing - details prefilled" and Customer is not "Existing - details prefilled" and Discount is not "Prefilled":* Paddle creates a transaction for the items on the checkout. It contains details of the business passed to Paddle.js and prefilled at checkout. Its status is initially `draft`. Its origin is `web`.
- [`transaction.created`](/webhooks/transactions/transaction-created) — *When Discount is "Prefilled" and Customer is not "Existing - details prefilled" and Business is not "Existing - details prefilled":* Paddle creates a transaction for the items on the checkout. It contains details of the discount (including total calculations) passed to Paddle.js and prefilled at checkout. Its status is initially `draft`. Its origin is `web`.
- [`transaction.created`](/webhooks/transactions/transaction-created) — *When Customer is "Existing - details prefilled" and Business is "Existing - details prefilled" and Discount is not "Prefilled":* Paddle creates a transaction for the items on the checkout. It contains details of the customer and business passed to Paddle.js and prefilled at checkout. Its status is initially `draft`. Its origin is `web`.
- [`transaction.created`](/webhooks/transactions/transaction-created) — *When Customer is "Existing - details prefilled" and Discount is "Prefilled" and Business is not "Existing - details prefilled":* Paddle creates a transaction for the items on the checkout. It contains details of the customer and discount (including total calculations) passed to Paddle.js and prefilled at checkout. Its status is initially `draft`. Its origin is `web`.
- [`transaction.created`](/webhooks/transactions/transaction-created) — *When Business is "Existing - details prefilled" and Discount is "Prefilled" and Customer is not "Existing - details prefilled":* Paddle creates a transaction for the items on the checkout. It contains details of the business and discount (including total calculations) passed to Paddle.js and prefilled at checkout. Its status is initially `draft`. Its origin is `web`.
- [`transaction.created`](/webhooks/transactions/transaction-created) — *When Customer is "Existing - details prefilled" and Business is "Existing - details prefilled" and Discount is "Prefilled":* Paddle creates a transaction for the items on the checkout. It contains details of the customer, business, and discount (including total calculations) passed to Paddle.js and prefilled at checkout. Its status is initially `draft`. Its origin is `web`.

### Transaction ready for payment

*Only when Customer is "Existing - details prefilled".*

- [`transaction.updated`](/webhooks/transactions/transaction-updated) — Paddle updates the transaction with the customer and address. The transaction status is `ready` because the transaction has customer and address information.
- [`transaction.ready`](/webhooks/transactions/transaction-ready) — Occurs because the transaction status changes to `ready`.

### Customer adds their details and address

*Only when Customer is not "Existing - details prefilled".*

- [`customer.created`](/webhooks/customers/customer-created) — *When Customer is "New":* Paddle creates a new customer with the information provided by the customer. The customer's status is `active`.
- [`address.created`](/webhooks/addresses/address-created) — When a customer enters their country and ZIP/postal code, Paddle always creates a new address related to this customer.
- [`transaction.updated`](/webhooks/transactions/transaction-updated) — Paddle updates the transaction with the customer and address. The transaction status is `ready` because the transaction has customer and address information.
- [`transaction.ready`](/webhooks/transactions/transaction-ready) — Occurs because the transaction status changes to `ready`.

### Customer adds their business details

*Only when Business is "New".*

- [`business.created`](/webhooks/businesses/business-created) — When a customer enters their business details, Paddle creates a business.
- [`address.updated`](/webhooks/addresses/address-updated) — Customers must provide an address when entering details of their business. Paddle updates the existing address associated to the customer.
- [`transaction.updated`](/webhooks/transactions/transaction-updated) — Paddle updates the transaction with the new business that was just created. Totals on the transaction may be updated to reflect changes in tax.

### Customer adds a discount

*Only when Discount is "Entered by customer".*

- [`transaction.updated`](/webhooks/transactions/transaction-updated) — Paddle updates the transaction with details of the discount (including total calculations). Also includes any changes made by the customer at checkout to items and quantities.

### Customer completes checkout successfully

- [`transaction.updated`](/webhooks/transactions/transaction-updated) — The transaction status changes to `paid` now that the customer has paid successfully. The transaction is updated with information about the successful payment.
- [`transaction.paid`](/webhooks/transactions/transaction-paid) — Occurs because the transaction status changes to `paid`.
- [`subscription.created`](/webhooks/subscriptions/subscription-created) — *When Subscription trials is disabled:* Paddle creates a subscription for the customer, address, and business against the transaction. Its status is `active` as the prices in the transaction items have no `trial_period`. Includes a `transaction_id` field so you can match with the completed transaction.
- [`subscription.created`](/webhooks/subscriptions/subscription-created) — *When Subscription trials is enabled:* Paddle creates a subscription for the customer, address, and business against the transaction. Its status is `trialing` as the prices in the transaction items have a `trial_period`. Includes a `transaction_id` field so you can match with the completed transaction.
- [`subscription.activated`](/webhooks/subscriptions/subscription-activated) — *When Subscription trials is disabled:* Occurs because the subscription has no trial period and is now active.
- [`subscription.trialing`](/webhooks/subscriptions/subscription-trialing) — *When Subscription trials is enabled:* Occurs because the subscription status changes to `trialing`.
- [`transaction.updated`](/webhooks/transactions/transaction-updated) — The transaction is updated with the ID of the new subscription, the billing period, and information about fees, payouts, and earnings.
- [`transaction.updated`](/webhooks/transactions/transaction-updated) — An invoice number is assigned to the transaction. Its status changes to `completed` as Paddle has finished processing it.
- [`transaction.completed`](/webhooks/transactions/transaction-completed) — Occurs because the transaction status changes to `completed`.

### Payment method is saved

- [`payment_method.saved`](/webhooks/payment-methods/payment-method-saved) — Occurs if the customer opted to save their payment method at checkout.
