docs
/
Courses — Appmint

Appmint Subscriptions: Recurring Products and Payments

Watch on YouTube ↗

Video chapters
  1. 0:00 Welcome
  2. 0:17 How subscriptions work
  3. 0:38 1 · Plans and the payment gateway: explained
  4. 0:52 1 · Plans and the payment gateway — Stripe, the Coffee Club plan, the product
  5. 2:21 2 · Subscribing: explained
  6. 2:34 2 · Subscribing — Leah subscribes with a Stripe test card
  7. 3:25 3 · Checking the money: explained
  8. 3:37 3 · Checking the money — subscription details and Finance › Payments
  9. 4:22 4 · Renewing: explained
  10. 4:39 4 · Renewing — Renew now: a second Stripe charge
  11. 5:05 5 · A declined card, and changing plan: explained
  12. 5:24 5 · A declined card, and changing plan — declined card, update card, plan change
  13. 6:33 6 · Cancelling: explained
  14. 6:46 6 · Cancelling — cancel at period end
  15. 7:19 Wrap-up

Written guide

Overview

Prepare a recurring product in Appmint and understand exactly which parts are local configuration and which require a verified billing-provider agreement. This course does not present local status edits as recurring payment.

Limitations and checks

The illustrated plan is retained historical local evidence. Current creation and lifecycle instructions were checked against subscription-create.tsx, subscription-store.ts and the record view. No new enrollment, renewal or provider payment was executed in this pass; those outcomes remain unverified.

01. Create the plan

Why this matters

The plan defines the price and interval. Upstream identifiers connect it to a provider’s actual product and price.

Follow these steps

Open Storefront → Subscription → Plans & Pricing and add a plan. Enter Name, Title, Price, Display Price, Duration and Duration Unit. Units include minute, hour, day, week, month, year and forever. Set Trial Period in Days, Status, Features, Add-ons, Description and Images. Save Inactive while preparing it; refresh and reopen.

Check the result

Display Price is presentation, not a second charge. A plan saved locally does not establish provider billing.

Save and recognize the monthly plan

  1. Open Storefront → Subscription → Plans & Pricing and use the + create control in the plan table.
  2. Enter internal Name course-print-club, readable Title Cedar Print Club, Price 15, Display Price 15, Duration Unit → Month, Duration → 1 and Trial Period in Days → 0.
  3. Set Status → Inactive while preparing the offering. Save once, close the editor and use the table's Refresh.
  4. Find the same name and compare price, duration and status in the saved row. Reopen with its edit control before changing features or provider references.

Refreshed Plans and Pricing table with inactive Cedar Print Club monthly plan

Historical saved local plan: price15/display15, Month1, Inactive. No customer subscription or billing outcome is shown.

02. Connect the provider and catalogue offering

Why this matters

Provider product/price references must describe the same currency and interval as the local plan.

Follow these steps

Configure the compatible payment/billing integration first. In the plan’s Upstream section choose the offered Stripe, PayPal or Paddle provider and enter the actual Price ID, Product ID and remarks where used. Save and reopen. Attach the plan through the product’s Subscription Plan selector and inspect the intended customer offering.

Check the result

The offered upstream enum is not proof every billing operation is fully implemented. Match references to the correct provider environment and inspect the consumer enrollment path before claiming purchase readiness.

03. Customer subscription record

Why this matters

A manually created subscription is a record, not a customer’s authorization for recurring charges.

Follow these steps

  1. Open Create Subscription. The current screen is Subscribe a customer, not the older generic data form.
  2. In Customer, select the actual customer or enter their email in the supplied email field. In Plan, select the intended saved plan; the selector uses the plan's name reference.
  3. Review Skip the plan's trial (paid plans with a trial only). Leave it off when the plan's trial should apply. Enter a Note if a reason should appear in subscription history.
  4. Choose Start subscription once and wait through Starting…. This calls the server subscribe operation; it is not merely saving a draft row.
  5. Read the returned state: the UI distinguishes Subscription started, Trial started, and Subscription created — waiting for the first payment. Open the saved subscription and inspect its period, payment and history before telling the customer billing is active.

Check the result

An active free plan does not imply money was collected. A paid plan can require the customer's payment method. Do not use a real paid plan for a harmless form practice: this action can start actual billing through the configured system. Provider execution remains unverified in this documentation pass.

04. Pause, resume, renew and cancel boundaries

Why this matters

Current lifecycle controls call server subscription actions. They are no longer accurately described as generic local status edits. Their effect must be checked on the subscription history and any associated billing records.

Follow these steps

  1. Open the saved subscription's normal record view. Use Edit fields only for ancillary details; use the named lifecycle action for pausing, resuming, renewing or cancellation.
  2. For Pause, inspect the reason and optional resume date, then confirm Pause subscription. Wait for completion and inspect the refreshed record/history.
  3. For cancellation, choose Cancel now or At period end deliberately. Confirm the corresponding action and inspect whether the record ended immediately or has a scheduled end.
  4. Before Renew, inspect the current period and existing payment attempt. Recheck the returned record and payment result; do not click again simply because one screen was slow.
  5. Where an external billing agreement is involved, reconcile its state and references separately. A server response or UI badge alone is not proof of external settlement.

Check the result

The current store invokes SubscriptionApi.pause, resume, renew and cancel; the record screen supplies cancellation timing and history. This source inspection supersedes the older claim that these buttons only changed local fields. Fresh controlled lifecycle screenshots and provider/payment proof are still required.

05. Failed collection and history

Why this matters

A failed invoice, expired local record and cancelled provider agreement require different recovery.

Follow these steps

Inspect the subscription’s customer, plan, dates and upstream references, then the corresponding provider/payment result and history. Correct a missing/mismatched reference before retrying enrollment. If payment failed, inspect whether an agreement or charge already exists before another attempt.

Check the result

Do not present a successful Renew request as collected money without inspecting the resulting payment. Use genuine provider sandbox evidence, clearly identified, when the integration is ready.

06. Create and reopen the product

Why this matters

A product record ties customer presentation to the SKU your team uses. A saved draft is a useful first checkpoint before making the product available.

Follow these steps

Open Storefront → Product → Products → Add Product. Enter Product Name, SKU and URL Slug. Enter Description and Price. Leave the product in Draft while preparing it. Choose Create Product, close the editor, refresh Products and reopen the same SKU. Check its name, slug, price and status. Cost per Item is an internal product value; it must not be narrated as another buyer charge.

Check the result

Use a unique SKU and slug. Inspect save errors before repeating Create Product. The list and reopened record establish persistence; the public product page establishes customer visibility.

07. Media and catalogue organization

Why this matters

Reusable catalogue references keep products consistent, while the default image controls the first visual impression.

Follow these steps

Open Media, add the intended product images and use Set as default image on the lead image. Inspect image order and remove an incorrect image. Add Brand, Categories and Tags through their selectors. Use extraInfo for titled sections, reorder them with Move up/Move down and save. Open the customer product page through the site and check its gallery, description and brand.

Check the result

A file visible in the picker is not necessarily the default product image. Reopen the product and public route after saving. Links to shared brand/category records should remain references rather than duplicate names.

08. Shipping, bundles and alternative offerings

Why this matters

Physical shipping, digital delivery, bundles and recurring plans have different requirements. Select the model the product actually uses rather than assuming every product ships as one parcel.

Follow these steps

Open Shipping. Enter Weight and dimensions with the intended units; choose Ships As and Shipping Config where needed. Review Packaging, Flat Rate override, Ships From Location, signature, hazmat, fragile and geographic exclusions. For a bundle, open bundle and select component products and quantities, then inspect the buyer basket and component stock after a controlled order. For digital goods use Digital Download URL and test access as the buyer. For recurring goods select Subscription Plan and verify the linked plan is active and provider-ready.

Check the result

A product override can supersede the default delivery rule. A download URL does not establish buyer-only authorization. A subscription plan reference does not create a recurring provider agreement; that lifecycle belongs to the subscription checks.

09. Preview and share the customer document

Why this matters

The customer link must identify the same saved document the operator edits. Sending and copying a link are separate actions.

Follow these steps

Open Invoice Preview and compare line calculations and total with the editor. Obtain the actual payment/customer link from the invoice; if unavailable, read the reported reason and correct site/link readiness instead of constructing an invented URL. Use Send Invoice, verify email/phone and Send a copy to myself, then send to the controlled recipient. Open the received link in an independent customer browser.

Check the result

Keep internal notes separate from Customer Notes. A sent notice does not establish receipt. Earlier preview omitted line-discount explanation; inspect current rendering and report unexplained arithmetic.

10. Payment, partial balance and order conversion

Why this matters

Payment creates financial evidence; conversion creates the working order. Neither is implied by a printable invoice.

Follow these steps

Use Take Payment with the configured method and intended amount, complete the controlled payment and inspect transaction/reference, total paid and remaining balance. For a partial payment compare both the payment record and updated customer document. Use the supported Create Order conversion and follow the linked order. Confirm catalogue SKU and quantities survive; distinguish manual service lines from inventory-backed lines.

Check the result

Refresh before retrying an unclear collection. Mark Paid is not provider collection. The invoice can show its converted order link; use that link to avoid duplicate conversion.

11. Verify the recurring contract and future billing boundary

Why this matters

The connected result must be checked at both sides of this handoff. Keep the original record reference visible while moving to the destination.

Follow these steps

Use the actual customer enrollment route only after the provider integration and upstream plan references are ready. Inspect the provider subscription identifier, first invoice/payment, period and next billing date. For renewal use genuine provider sandbox execution and compare the new invoice and payment. For cancellation inspect the external agreement and future billing behavior independently of the Appmint local status.

Check the result

Current local Pause/Resume/Cancel/Renew handlers only save fields. This is a documented application capability gap, not an instruction to pretend recurring billing stopped. Keep the course in source-draft status until the end-to-end agreement flow is proven or fixed.

Limitations and checks

Provider enrollment, renewal, plan change and cancellation outcomes are not complete in current evidence. The script includes these required checks and explicitly blocks unsupported claims.

Next steps

Return to the saved records and check the handoff that matters for your use of the platform. A visible result at each end makes the workflow explainable and gives you a precise place to investigate when it fails.

Appmint Subscriptions and recurring billing — supporting guide

Overview

Set up a recurring offering and distinguish Appmint’s local subscription record from provider-controlled billing. We will cover plans and customer records, then the evidence needed for renewals and lifecycle changes.

Before you start

Prepare the saved plan and actual customer identity. Current subscriptions use a server-backed Start subscription flow; the old generic create form in historical recordings is superseded. A free plan, a trial and a paid plan can return different starting states. Inspect that result instead of assuming every creation collects money.

The historical Cedar Print Club plan below is inactive, price15, duration1Month. It demonstrates plan persistence only; it has no proven provider enrollment or renewal. Current-source procedures below require fresh browser rehearsal before the course can claim those outcomes.

01. Create the plan

Why this matters

The plan defines the price and interval. Upstream identifiers connect it to a provider’s actual product and price.

Follow these steps

Open Storefront → Subscription → Plans & Pricing and add a plan. Enter Name, Title, Price, Display Price, Duration and Duration Unit. Units include minute, hour, day, week, month, year and forever. Set Trial Period in Days, Status, Features, Add-ons, Description and Images. Save Inactive while preparing it; refresh and reopen.

Check the result

Display Price is presentation, not a second charge. A plan saved locally does not establish provider billing.

Save and recognize the monthly plan

  1. Open Storefront → Subscription → Plans & Pricing and use the + create control in the plan table.
  2. Enter internal Name course-print-club, readable Title Cedar Print Club, Price 15, Display Price 15, Duration Unit → Month, Duration → 1 and Trial Period in Days → 0.
  3. Set Status → Inactive while preparing the offering. Save once, close the editor and use the table's Refresh.
  4. Find the same name and compare price, duration and status in the saved row. Reopen with its edit control before changing features or provider references.

Refreshed Plans and Pricing table with inactive Cedar Print Club monthly plan

Historical saved local plan: price15/display15, Month1, Inactive. No customer subscription or billing outcome is shown.

02. Connect the provider and catalogue offering

Why this matters

Provider product/price references must describe the same currency and interval as the local plan.

Follow these steps

Configure the compatible payment/billing integration first. In the plan’s Upstream section choose the offered Stripe, PayPal or Paddle provider and enter the actual Price ID, Product ID and remarks where used. Save and reopen. Attach the plan through the product’s Subscription Plan selector and inspect the intended customer offering.

Check the result

The offered upstream enum is not proof every billing operation is fully implemented. Match references to the correct provider environment and inspect the consumer enrollment path before claiming purchase readiness.

03. Customer subscription record

Why this matters

A manually created subscription is a record, not a customer’s authorization for recurring charges.

Follow these steps

  1. Open Create Subscription. The current screen is Subscribe a customer, not the older generic data form.
  2. In Customer, select the actual customer or enter their email in the supplied email field. In Plan, select the intended saved plan; the selector uses the plan's name reference.
  3. Review Skip the plan's trial (paid plans with a trial only). Leave it off when the plan's trial should apply. Enter a Note if a reason should appear in subscription history.
  4. Choose Start subscription once and wait through Starting…. This calls the server subscribe operation; it is not merely saving a draft row.
  5. Read the returned state: the UI distinguishes Subscription started, Trial started, and Subscription created — waiting for the first payment. Open the saved subscription and inspect its period, payment and history before telling the customer billing is active.

Check the result

An active free plan does not imply money was collected. A paid plan can require the customer's payment method. Do not use a real paid plan for a harmless form practice: this action can start actual billing through the configured system. Provider execution remains unverified in this documentation pass.

04. Pause, resume, renew and cancel boundaries

Why this matters

Current lifecycle controls call server subscription actions. They are no longer accurately described as generic local status edits. Their effect must be checked on the subscription history and any associated billing records.

Follow these steps

  1. Open the saved subscription's normal record view. Use Edit fields only for ancillary details; use the named lifecycle action for pausing, resuming, renewing or cancellation.
  2. For Pause, inspect the reason and optional resume date, then confirm Pause subscription. Wait for completion and inspect the refreshed record/history.
  3. For cancellation, choose Cancel now or At period end deliberately. Confirm the corresponding action and inspect whether the record ended immediately or has a scheduled end.
  4. Before Renew, inspect the current period and existing payment attempt. Recheck the returned record and payment result; do not click again simply because one screen was slow.
  5. Where an external billing agreement is involved, reconcile its state and references separately. A server response or UI badge alone is not proof of external settlement.

Check the result

The current store invokes SubscriptionApi.pause, resume, renew and cancel; the record screen supplies cancellation timing and history. This source inspection supersedes the older claim that these buttons only changed local fields. Fresh controlled lifecycle screenshots and provider/payment proof are still required.

05. Failed collection and history

Why this matters

A failed invoice, expired local record and cancelled provider agreement require different recovery.

Follow these steps

Inspect the subscription’s customer, plan, dates and upstream references, then the corresponding provider/payment result and history. Correct a missing/mismatched reference before retrying enrollment. If payment failed, inspect whether an agreement or charge already exists before another attempt.

Check the result

A Renew action is a server operation, not a demonstration shortcut. Inspect its returned period, payment attempt and history before claiming collection. Use genuine controlled provider evidence when billing is configured.

Detailed instructions

The following retained material documents earlier local work. Its pending checks remain pending; historical successful outcomes are not claims of a fresh execution. Use the source-authored instructions above to prepare the new recording, and preserve these references for comparison.

T08: Sell a recurring offering

Worked example

Cedar Print Club is a recurring offer, so first define the plan without creating a subscriber. Open Subscription, then Plans and Pricing. Use the toolbar plus to open Store Subscription Plan. Enter course-print-club as Name, Cedar Print Club as Title, and fifteen for Price and Display Price. Choose Month and Duration one. Trial Period in Days is zero. Keep Status Inactive and Upstream unset for this local setup. Save returns Data inserted. If the list still shows zero records, use Refresh; the saved plan then appears. Select its row to reveal the leading-cell actions and choose Edit. Check the persisted prices, Month, Duration one, zero trial and Inactive status. Create Subscription is a different tab: that is where the plan would be connected to a customer agreement. Our subscriber list is still empty. Saving this plan has not collected fifteen dollars, started a trial or proved provider renewal or cancellation.

Included controls: Dashboard, Subscriptions, Plans & Pricing, Create Subscription, plan duration/unit, price, trial, addons/features, upstream product/price, Details, Customer, active/paused/cancelled/trial, renewal.

Limitations and checks: All current plan/create/customer/detail field labels, saved/read-back plan and customer contract, configured sandbox billing first/renewal, trial/pause/cancel actions/history and rejection. SF13 cancelled form is inspection only.

Check the result: Plan and contract identities distinct; actual provider events/customer state/charge verified.

Implementation reference: subscription-plans.tsx, subscription-details.tsx.

New actual evidence: SF26-subscription-rental-local.webm, LEDGER.md.

Limitations and checks

Current UI entry and editor: . Corresponding SDK storefront schemas and the retained AppEngine references define fields and consumer boundaries. Provider calls, external delivery, payments and financial mutations were not performed for this writing task.

Next steps

You can now follow the module from its configuration to the record that proves the result. Use the relevant chapter to revisit an alternative or troubleshoot the exact failed handoff.

BusinessMade Subscriptions — supporting guide

Reader update: BusinessMade route and current mounted source reviewed 5 October 2026.

Understand the records and results

Plan setup is not an active subscription

Explanatory diagram, not an application screenshot. Saved plan, customer enrollment and successful collection are different results. It explains the distinctions used in the steps below; it does not establish a completed live workflow.

Separate plan setup from customer enrolment

Open Storefront → Subscriptions in BusinessMade. Plans & Pricing defines what can be sold; Create Subscription creates an individual subscription record; Subscriptions lets you inspect existing customer records. A saved plan does not by itself enrol a customer, and a locally active record does not establish a successful recurring charge.

Prepare the intended customer, plan and compatible provider references before enrolment. Use Plans & Pricing to check the plan first, then return to the intended customer record. After saving, reopen that subscription and compare customer, plan, dates and current state. Verify the provider’s actual billing reference and outcome separately before claiming renewal is working.

Visual evidence gap: retained BusinessMade subscription images show either Error Loading Subscriptions or the sign-in page. They were inspected and excluded rather than presented as successful plan setup. If the dashboard reports a load error, use Try Again and inspect the underlying list after recovery; do not create another subscription to compensate for a failed read. Current plan editor, saved plan, customer enrolment and renewal outcomes still need matching captures.

Overview

Set up a recurring offering and distinguish the local subscription record from provider-controlled billing. We will cover plans and customer records, then the evidence needed for renewals and lifecycle changes.

BusinessMade entry and scope

Open Storefront → Subscriptions at /storefront/subscriptions in BusinessMade. This route mounts the shared Subscriptions module; the surrounding menus are BusinessMade’s. Use Operations → Contacts for customer details, Operations → Customers & Benefits for group eligibility, Admin → Business locations for branches, and Operations → POS / Order entry for counter sales. Keep the organization and record identity consistent across those screens.

The location selector governs the venue-specific POS, but does not establish that every shared Storefront module filters its data by that selection. Inspect the record’s own location and currency. Payments are under Storefront → Payments, while delivery rules and shipments are under Storefront → Shipping; creating this module’s record is not payment or shipping-provider configuration.

01. Create the plan

Context

The plan defines the price and interval. Upstream identifiers connect it to a provider’s actual product and price.

Follow the steps

Open Storefront → Subscriptions → Plans & Pricing and add a plan. Enter Name, Title, Price, Display Price, Duration and Duration Unit. Units include minute, hour, day, week, month, year and forever. Set Trial Period in Days, Status, Features, Add-ons, Description and Images. Save Inactive while preparing it; refresh and reopen.

Check the result

Display Price is presentation, not a second charge. A plan saved locally does not establish provider billing.

02. Connect the provider and catalogue offering

Context

Provider product/price references must describe the same currency and interval as the local plan.

Follow the steps

Configure the compatible payment/billing integration first. In the plan’s Upstream section choose the offered Stripe, PayPal or Paddle provider and enter the actual Price ID, Product ID and remarks where used. Save and reopen. Attach the plan through the product’s Subscription Plan selector and inspect the intended customer offering.

Check the result

The offered upstream enum is not proof every billing operation is fully implemented. Match references to the correct provider environment and inspect the consumer enrollment path before claiming purchase readiness.

03. Customer subscription record

Two records must connect before you inspect collection

Concept diagram, not a screenshot or a completed-action record. Plan configuration alone does not create or charge a customer subscription.

Context

A manually created subscription is a record, not a customer’s authorization for recurring charges.

Follow the steps

Open Create Subscription. Enter subscription Name, Plan and customer Email, which are required, and complete the intended customer/period fields. Save, refresh Subscriptions and reopen the record. For a buyer enrollment, use the actual linked customer route and verify the provider subscription reference, first payment, period and status independently.

Check the result

The current editor saves through generic record persistence. Do not describe that Save as charging or creating a provider agreement.

04. Pause, resume, renew and cancel boundaries

Context

Current local lifecycle controls update status and dates. That behavior must not be confused with stopping an external recurring charge.

Follow the steps

Open the saved subscription and inspect its available Cancel Subscription action; list controls may offer pause, resume and renew. For a controlled local record, run the intended action, refresh and inspect status/date. Compare the external provider agreement separately before claiming billing changed.

Check the result

Current pause sets inactive, resume sets active, cancel sets cancelled and renew updates local renewal dates. Inspected handlers do not call the provider. A true recurring-billing cancellation/renewal demonstration remains blocked until the provider path is verified or implemented.

05. Failed collection and history

Context

A failed invoice, expired local record and cancelled provider agreement require different recovery.

Follow the steps

Inspect the subscription’s customer, plan, dates and upstream references, then the corresponding provider/payment result and history. Correct a missing/mismatched reference before retrying enrollment. If payment failed, inspect whether an agreement or charge already exists before another attempt.

Check the result

Do not simulate a renewal by clicking local Renew and narrate it as collected money. Use genuine provider sandbox evidence, clearly identified, when the integration is ready.

BusinessMade operational handoff — Connect the plan, product and payer

Context

Subscriptions connects to the saved customer, product or transaction. Follow that identity through the BusinessMade operation rather than creating a second record to illustrate a result.

Follow the steps

Create and reopen the subscription plan with its intended currency, interval, trial and upstream provider price/product identifiers. In Storefront → Products select that Subscription Plan on the intended product and save. Use the supported recurring customer checkout, then inspect the provider subscription/contract and the saved customer subscription independently. Return to Storefront → Subscriptions to inspect dates, status and payer; match payments under Storefront → Payments. A one-time POS tender is not an instruction to create a recurring provider contract.

Recovery and implementation boundary

Pause, resume, cancel and renew in the inspected local subscription service persist local fields; they do not demonstrate a matching provider operation. Customer billing cessation/renewal remains pending until the actual provider lifecycle is implemented and verified.

Limitations and checks

Substantive pending work: Pause, resume, cancel and renew in the inspected local subscription service persist local fields; they do not demonstrate a matching provider operation. Customer billing cessation/renewal remains pending until the actual provider lifecycle is implemented and verified. Runtime evidence for the taught handoff remains separate from authored coverage. Do not mark the course production-ready until the intended branch’s saved result, failure recovery and customer/provider outcome have been checked.

Next steps

You can return directly to the chapter for the change you need. Keep the saved record and its operational result together: the same customer, product, location and transaction should remain identifiable through each handoff.