Skip to content
Paykit
Esc
↑↓navigate↵open⌘Jpreview
On this page

Attach

Exports `Attach`, `Update`, `PreviewAttach`, `PreviewUpdate`.

Source: packages/paykit/src/Billing/Attach.binding.ts

Attach

Kind: Binding · Product: Plans · Provides: Paykit.Attach

Buy a plan, move to a bigger one now, or schedule a smaller one for the boundary. This is the operation a caller should use instead of choosing between Subscribe, ChangeTier and ScheduleTierChange.

An upgrade is immediate; a downgrade waits for the boundary by default. A positive proration is collected in the same operation unless the caller asks for no proration. Quantities for a scheduled change or a checkout are refused for now, because the current commands cannot carry them.

Buying or moving a plan

const attach = yield* Paykit.Attach(account);
yield* attach({ planId: "free", idempotencyKey: "attach-1" });
yield* attach({ planId: "pro", idempotencyKey: "attach-2" });

Update

Kind: Binding · Product: Plans · Provides: Paykit.Update

Change quantities, cancel at the boundary, or take a future intent back. A cancellation drops a pending plan change; an uncancel clears whichever intent is pending. An immediate cancellation is refused until its command lands.

Updating a running plan

const update = yield* Paykit.Update(account);
yield* update({ idempotencyKey: "seats-1",
                featureQuantities: [{ featureId: "seats", quantity: 8 }] });
yield* update({ idempotencyKey: "cancel-1", cancelAction: "cancel_end_of_cycle" });

PreviewAttach

Kind: Binding · Product: Plans · Provides: Paykit.PreviewAttach

The plan move attach would make, decided without recording anything.

Showing a plan change first

const preview = yield* Paykit.PreviewAttach(account);
const answer = yield* preview({ planId: "pro" });

PreviewUpdate

Kind: Binding · Product: Plans · Provides: Paykit.PreviewUpdate

The commands update would send, decided without recording anything.

Showing a cancellation first

const preview = yield* Paykit.PreviewUpdate(account);
yield* preview({ cancelAction: "cancel_end_of_cycle" });

Was this page helpful?