Skip to main content

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 Product
Done. You get a permanent purchase link for fixed-price selling, or a reusable billing object for programmatic checkout.

Product Fields

Required

Optional

Price Limits

Each currency has a minimum and maximum price you can set on a product. Values outside this range are rejected when you save the product.
CNY prices one-time products only — subscription products cannot be priced in CNY. CNY-priced orders are payable by WeChat Pay only, and each buyer can pay you at most ¥1,000 via WeChat per calendar month. See Method and currency support.

Multi-Currency Pricing

Price the same product deliberately per market — $9.99, JP¥980, CN¥68 — instead of pushing one base price through a live rate into awkward numbers.

Reference prices

Adding a currency prefills the amount by converting your existing price at the current rate.
That figure is a reference price, not a commitment. Round it to whatever suits the market — the rate hint stays beside the currency while more than one is configured.

Yen disambiguation

CN¥ for Chinese yuan, JP¥ for Japanese yen — applied everywhere, so the two are never confused at checkout.
Currencies are priced independently rather than converted, so a subscription cannot change plan across currencies. See Changing Plans.

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

  1. Create a base one-time product in Waffo Pancake
  2. Calculate the final amount on your server
  3. Pass priceSnapshot when creating the checkout session
priceSnapshot overrides the stored product price for that checkout session. Use it only from your server, never from untrusted client code.
If the amount is event-based, keep it as a one-time charge even if the customer is already on a subscription.

Trial Periods

Let customers try subscription products before they commit. A trial can be free or carry a price — see Paid Trials.

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 pass requested_trial_days via the API to shorten or skip the trial for specific customers.
Effective trial abuse prevention requires buyerIdentity. Use authenticated checkout to ensure each buyer can only claim one trial per product.

Billing Intervals


Every product gets a permanent purchase link that never expires:
Test mode:
Add to your website:
  • Website button
  • Twitter bio
  • Email signature
  • Discord server
Key benefits:
  • 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
Getting your link:
  • Dashboard: Click “Copy Link” on any product
  • API: For advanced use cases, create a Checkout Session via API with custom parameters (dynamic link, 45-minute default TTL configurable up to 7 days)
Test vs Live:
  • Toggle Test Mode in Dashboard header to preview with test links
  • Test links use the /test suffix

Product Status

Active

Live. Customers can buy.

Inactive

Hidden from checkout; existing subscriptions continue. Products cannot be deleted — completed orders, invoices and settlement records reference them. Renaming or repricing adds a new version and keeps the product ID.

Updating Products

Products use immutable versioning:
Updates create new versions. Existing subscriptions keep their original version.

Environment Sync

Publish product versions from test to production:
Publishing is one-way (test → prod) and only needed for the first publish.

Best Practices

Include billing period:
  • “Pro Plan - Monthly”
  • “Pro Plan - Annual”
  • Round numbers (29,not29, not 28.73)
  • Research competitors
  • 400x400px minimum
  • PNG or JPG
  • Under 5MB