Documentation Index
Fetch the complete documentation index at: https://docs.waffo.ai/llms.txt
Use this file to discover all available pages before exploring further.
Product = Billing Object
In Waffo Pancake, a product is the object used for checkout, taxation, and reporting. It is the commercial offer you charge for, not just a storefront card.For professional use, think of products as billing entities:
- a fixed-price offer
- a subscription plan
- or a base product used with dynamic pricing at checkout
Core Models
One-Time
Customer pays once for a predefined offer.
- Digital downloads
- Lifetime licenses
- Templates, courses, assets
Subscription
Customer is billed on a recurring schedule.
- SaaS plans
- Memberships
- Service retainers
Dynamic Pricing
Amount is calculated at checkout time.
- Usage overage
- Credit top-ups
- Negotiated quotes
Create a Product
Dashboard —> Products —> Create ProductProduct Fields
Required
| Field | What It Is |
|---|---|
| Name | What customers see |
| Price | How much you charge |
| Currency | USD, EUR, GBP, CNY, JPY, HKD, etc. |
| Type | One-time or Subscription |
| Tax Category | SaaS, Digital Goods, Software, etc. |
Optional
| Field | Default | Purpose |
|---|---|---|
| Description | — | Markdown. Sell your product. |
| Image | — | 400x400px recommended |
| Success URL | — | Redirect after purchase |
Dynamic Pricing
Dynamic pricing is the right model when the final amount is not known until runtime. Examples:- usage-based overage billing
- prepaid credit packs with variable size
- contract-specific quotes
- temporary discounts calculated on your server
How It Works
- Create a base one-time product in Waffo Pancake
- Calculate the final amount on your server
- Pass
priceSnapshotwhen creating the checkout session
Free Trials
Let customers try subscription products before they buy.Trial Abuse Protection
Waffo Pancake automatically tracks consumer trial history at the platform level. When a consumer starts a new subscription, the platform calculates the maximum available trial days based on their history — preventing repeated trial abuse without any effort from the merchant. Merchants can also passrequested_trial_days via the API to shorten or skip the trial for specific customers.
Billing Intervals
| Interval | When | Best For |
|---|---|---|
| Weekly | Every 7 days | High-usage products |
| Monthly | Every month | Standard SaaS |
| Quarterly | Every 3 months | B2B software |
| Yearly | Every 12 months | Committed customers |
Product Purchase Links
Every product gets a permanent purchase link that never expires:- Website button
- Twitter bio
- Email signature
- Discord server
- Link is permanent — it stays the same even when you update product details
- No session or token management needed
- A checkout session is created automatically when the customer opens the link
- Dashboard: Click “Copy Link” on any product
- API: For advanced use cases, create a Checkout Session via API with custom parameters (dynamic link, 7-day TTL)
- Toggle Test Mode in Dashboard header to preview with test links
- Test links use the
/testsuffix
Product Status
Active
Live. Customers can buy.
Inactive
Hidden. Existing subscriptions continue.
Updating Products
Products use immutable versioning:| Field | Impact |
|---|---|
| Name/Description | Creates new version |
| Image | Creates new version |
| Price | New purchases only |
| Interval | Cannot change after creation |
Environment Sync
Publish product versions from test to production:Publishing is one-way (test → prod) and only needed for the first publish.
Best Practices
Naming
Naming
Include billing period:
- “Pro Plan - Monthly”
- “Pro Plan - Annual (Save 20%)”
Pricing
Pricing
- Round numbers (28.73)
- Annual discount (15-20%)
- Research competitors
Images
Images
- 400x400px minimum
- PNG or JPG
- Under 2MB