> For the complete documentation index, see [llms.txt](https://codemash.gitbook.io/codemash/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://codemash.gitbook.io/codemash/cloud/payments/plans/editor.md).

# Add or edit a plan

Add or edit a plan — not in Cloud today; do it at your payment provider.

**Where:** Payments → Plans → **Add New** / a plan · `/projects/<project>/payments/plans/new` — not available today

{% hint style="warning" %}
Cloud has no Plans screen yet, and Norbix has no plan endpoints, so the SDK, the CLI and the API cannot do it either. The V2 code for this screen exists, but its routes are switched off (*restore when backend support returns*); the address `/projects/<project>/payments/plans` opens the **404** page. Create products and prices at your provider (for example **Stripe Dashboard → Product catalog**).
{% endhint %}

## Before you start

* A [connected integration](/codemash/cloud/payments/integrations/providers.md), so Norbix hears about the plans you create at the provider.

## Steps

1. Open your provider's dashboard and create or change the plan there. Create products and prices at your provider (for example **Stripe Dashboard → Product catalog**).
2. In Norbix, [create a payment trigger](/codemash/cloud/payments/triggers/new.md) for the provider events you care about.

## Result

The plan exists only at your provider. Norbix does not store it; it sees it when the provider sends an event that names it (its id is in the `@Model.Payment.ExternalIds.*` tokens of the trigger).

## Change or remove it later

* Change or remove the plan at your provider — see [Delete a plan](/codemash/cloud/payments/plans/delete.md).

## Do it from code

There is no plan call. What Norbix can do today is react when your provider reports a change, with a [payment trigger](/codemash/cloud/payments/triggers/new.md) on events such as `invoice.paid`, `customer.subscription.updated` (Stripe), `transaction.completed` (Paddle), `subscription_payment_success` (Lemon Squeezy), `PAYMENT.SALE.COMPLETED` (PayPal). List the events Norbix received:

```ts
const { list } = await norbix.hub.payments.getPaymentsWebhookLog({ limit: 20 });
for (const call of list) console.log(call.receivedOn, call.eventName, call.statusCode, call.description);
```

```sh
norbix hub payments webhook log get --limit 5
```

The client setup is on the [Payments page](/codemash/cloud/payments.md#use-it-from-code). API: [Get Payments Webhook Log](/codemash/api-reference/payments/webhooks/get-payments-webhook-log.md)
