Handling subscriptions and recurring orders
Summary: Norce Commerce does not provide a supported, built-in subscription engine. Requirements such as recurring deliveries, "subscribe and save", or recurring billing are best solved in your own solution layer, using Norce for the parts it is good at — the catalog, pricing, customers, orders and events — while keeping the subscription agreement and scheduling outside Norce.
A Subscription API exists in the Shopping Service (CreateSubscription, UpdateSubscription, and so on). It is legacy and is retained only to support older solutions. Do not build new solutions on it. Use the approach described below instead.
Where the subscription lives
The subscription itself — who subscribes, to what, how often, the next run date, and whether it is paused — is state that belongs in your solution layer, not in Norce. This can be a dedicated subscription service or a table in your integration layer. Store at least:
- The customer (and company, for B2B).
- The subscribed products and quantities.
- The cadence (for example every 4 weeks) and the next run date.
- The status (active, paused, cancelled) and, for pauses, when to resume.
- A reference to the payment agreement or token, if the payment provider supports recurring charges.
Keeping this outside Norce gives you full control over pause, resume, skip-a-delivery, and cancellation without depending on platform-specific behavior.
The recurring cycle
On each cycle, a scheduler in your solution layer turns the subscription into an ordinary order in Norce:
- When the next run date is reached, create a basket for the customer and add the subscribed products, using the customer's price list so subscriber pricing and discounts apply.
- Take the basket through the normal purchase flow to create an order. See Working with baskets and The checkout process.
- Charge the customer through your payment provider (see Payments).
- Advance the next run date, and react to the order events from Norce (for example order confirmed) if you need to update your subscription store.
Pause, resume, skip and cancel are handled entirely in your store by adjusting the next run date or the status — the scheduler simply does not create an order when a subscription is paused or cancelled.
Pricing and offers
Use standard Norce features for the commercial side:
- Price lists for subscriber-specific or tiered pricing. See Pricing structure.
- Promotions for introductory offers (for example a discount on the first delivery).
- Bundles when a subscription is a fixed kit of products. See Selling bundles.
Payments
Recurring charges are the responsibility of the payment provider, not Norce. Norce Checkout (NCO) supports recurring payments for several PSPs, and can store payment tokens for recurring charge flows. The token is saved to the initial order and can be retrieved from there by your solution layer to charge subsequent cycles without requiring the customer to re-enter payment details.
Check the specific payment adapter you use to confirm whether recurring payments or token storage are supported. Where recurring payment is not available from the PSP, an invoice-based flow is a common alternative for B2B subscriptions.
What Norce provides to build on
| Need | Norce capability |
|---|---|
| Catalog and product data | Product model, bundles, relations |
| Subscriber pricing | Price lists, promotions |
| Customers and companies | Customer accounts, B2B company model |
| Turning a cycle into an order | Shopping (basket) and Order APIs |
| Recurring payment tokens | Stored on the initial order via NCO (PSP-dependent) |
| Reacting to order progress | Norce Commerce Event (e.g. order confirmed) |
The scheduling, pause/resume logic, and recurring payment orchestration remain in your solution layer.