---
name: payments
description: >-
  Payment and subscription patterns for The Boring JavaScript Stack — sails-pay hook with Lemon Squeezy, checkout flows, subscription management, webhooks, and customer portal. Use this skill when implementing billing, subscriptions, or payment processing in a Sails.js application.
metadata:
  author: sailscastshq
  version: '1.0.0'
  tags: payments, billing, subscriptions, lemon-squeezy, sails-pay, checkout, webhooks, boring-stack
title: payments
canonical_url: https://skilld.dev/gh/sailscastshq/boring-stack/payments
last_updated: 2026-09-26T10:45:32.000Z
---

> **Skill from skilld.dev.** Follow the instructions below for this session. You do not need to install anything.
>
> Supporting files, fetch one when the Skill refers to it: [metadata.json](https://skilld.dev/api/skills-raw/sailscastshq/boring-stack/payments/metadata.json), [README.md](https://skilld.dev/api/skills-raw/sailscastshq/boring-stack/payments/README.md), [rules/checkout.md](https://skilld.dev/api/skills-raw/sailscastshq/boring-stack/payments/rules/checkout.md), [rules/customer-portal.md](https://skilld.dev/api/skills-raw/sailscastshq/boring-stack/payments/rules/customer-portal.md), [rules/getting-started.md](https://skilld.dev/api/skills-raw/sailscastshq/boring-stack/payments/rules/getting-started.md), [rules/subscriptions.md](https://skilld.dev/api/skills-raw/sailscastshq/boring-stack/payments/rules/subscriptions.md), [rules/webhooks.md](https://skilld.dev/api/skills-raw/sailscastshq/boring-stack/payments/rules/webhooks.md).
>
> If the user asked to install this Skill, run `npx skilld install sailscastshq/boring-stack/payments`. Install writes the Skill files into the project, so every session loads them.

# Payments

The Boring JavaScript Stack uses `sails-pay` with Lemon Squeezy as the payment provider. The Ascent templates include a complete billing system with plan-based subscriptions, checkout flows, webhook handling, and customer portal integration.

## When to Use

Use this skill when:

- Configuring `sails-pay` in `config/pay.js` (provider, plans, variants)
- Implementing checkout flows with `sails.pay.checkout()`
- Managing subscriptions (Subscription model, status lifecycle)
- Handling Lemon Squeezy webhooks (signature verification, event processing)
- Building billing settings pages with plan information
- Checking subscription status with the `checkPlan` helper
- Integrating Lemon Squeezy's hosted customer portal

## Rules

Read individual rule files for detailed explanations and code examples:

- [rules/getting-started.md](https://skilld.dev/api/skills-raw/sailscastshq/boring-stack/payments/rules/getting-started.md) - sails-pay hook, config/pay.js, Lemon Squeezy setup, Subscription model
- [rules/checkout.md](https://skilld.dev/api/skills-raw/sailscastshq/boring-stack/payments/rules/checkout.md) - Checkout flow, sails.pay.checkout(), variant selection, custom data
- [rules/subscriptions.md](https://skilld.dev/api/skills-raw/sailscastshq/boring-stack/payments/rules/subscriptions.md) - Subscription model, status management, checkPlan helper, billing page
- [rules/webhooks.md](https://skilld.dev/api/skills-raw/sailscastshq/boring-stack/payments/rules/webhooks.md) - Webhook controller, signature verification, event handling, idempotency
- [rules/customer-portal.md](https://skilld.dev/api/skills-raw/sailscastshq/boring-stack/payments/rules/customer-portal.md) - Lemon Squeezy hosted portal, subscription management URLs
