Skip to content
Reponse.ai LogoDocs
DocsAPISDKsGuides

Search Documentation

Search for an article...

Getting Started

  • Overview
  • Architecture
  • Installation
  • Authentication
  • First Request

Products & Collections

  • Products — List
  • Products — Get
  • Products — Metafields
  • Collections — List
  • Collections — Get
  • Collections — Products

Cart & Checkout

  • Cart — Create
  • Cart — Get
  • Cart — Add Item
  • Cart — Update Item
  • Cart — Remove Item
  • Cart — Apply Promotion
  • Checkout — Stripe
  • Checkout — Payment Intent
  • Checkout — ACP

Orders & Fulfillment

  • Orders — Create
  • Orders — Get
  • Orders — Confirm
  • Orders — Cancel
  • Orders — Fulfill
  • Orders — Refund

Commerce

  • Inventory — Get
  • Inventory — Update
  • Shipping — Rates
  • Discounts — List
  • Discounts — Create
  • Discounts — Validate
  • Subscriptions — Manage

Loyalty & Gift Cards

  • Loyalty — Balance
  • Loyalty — Redeem
  • Loyalty — Referral
  • Gift Cards — List
  • Gift Cards — Redeem

Tickets & Support

  • Tickets — List
  • Tickets — Create
  • Tickets — Reply

Platform

  • Product Feed — JSON
  • Product Feed — CSV
  • Theme — Get
  • Approvals — Execute
  • Approvals — Reject
  • Geocode

SDKs

  • SDK Overview
  • TypeScript SDK
  • React Hooks

Guides

  • Chat Widget
  • Shopify Sync
  • Storefront Starter
  • Loyalty Program
  • Discounts & Promotions
  • Subscriptions
  • Klaviyo Integration
  • Custom Domains
  • Agentic Commerce (ACP)
  • A2A Protocol
  • AI Engines
  • MCP Server

Webhooks

  • Webhooks Overview
  • Events Reference
  • Shopify Webhooks
  • Stripe Webhooks
  • Reviews (Stamped / Trustpilot)
  • Logistics
  • Email Inbound

Resources

  • Environment Variables
  • Rate Limits
  • Changelog
DocsGuidesSubscriptions

Subscriptions

Selling and managing subscriptions.

3 min read/Last updated Aug 19, 2026
On this page

Overview

Reponse supports **recurring subscriptions** with scheduled shipments, flexible billing cycles, and lifecycle management. Customers and AI agents can delay shipments, ship early, pause, or cancel — all through the dashboard, API, or chat agent. Payment processing is handled by **Paddle** as the merchant of record.

Prerequisites

RequirementDescription
Reponse workspaceActive workspace on a plan that includes subscriptions
Paddle accountConnected in Dashboard → Settings → Payments
Subscription productAt least one product configured as a subscription

Key concepts

ConceptDescription
Subscription planDefines the product, price, billing cycle, and shipment frequency
Billing cycleHow often the customer is charged (weekly, monthly, quarterly, yearly)
Shipment scheduleWhen the next shipment is dispatched (can differ from billing)
Lifecycle stateCurrent state of the subscription

Step 1 — Create a subscription plan

  1. Open Dashboard → Products → Subscriptions.
  2. Click Create Plan.
  3. Configure the plan:
FieldTypeDescription
product_idstringThe product to sell as a subscription
namestringPlan display name (e.g. "Monthly Coffee Box")
billing_cycleenumweekly, monthly, quarterly, yearly
pricenumberRecurring price per cycle
currencystringISO currency code
trial_daysnumberFree trial period (0 = no trial)
shipment_frequencyenumHow often to ship (can match or differ from billing)

Via the API

typescript
const { data: plan } = await reponse.subscriptions.createPlan({
  body: {
    productId: 'prod_xxx',
    name: 'Monthly Coffee Box',
    billingCycle: 'monthly',
    price: 29.99,
    currency: 'EUR',
    trialDays: 14,
  },
});

Step 2 — Customer subscribes

When a customer subscribes, Reponse creates a subscription record and initiates billing through Paddle:

typescript
const { data: subscription } = await reponse.subscriptions.create({
  body: {
    planId: 'plan_xxx',
    email: 'customer@example.com',
    shippingAddress: { /* ... */ },
  },
});
// subscription.id → "sub_xxx"
// subscription.status → "active" (or "trialing" if trial_days > 0)

Step 3 — Manage subscriptions

Delay next shipment

Push the next shipment forward by a number of days:

typescript
await reponse.subscriptions.manage({
  path: { id: 'sub_xxx' },
  body: { action: 'delay', days: 7 },
});

Ship now

Trigger an immediate shipment:

typescript
await reponse.subscriptions.manage({
  path: { id: 'sub_xxx' },
  body: { action: 'ship_now' },
});

Pause

Temporarily pause a subscription (billing and shipments stop):

typescript
await reponse.subscriptions.manage({
  path: { id: 'sub_xxx' },
  body: { action: 'pause' },
});

Resume

Resume a paused subscription:

typescript
await reponse.subscriptions.manage({
  path: { id: 'sub_xxx' },
  body: { action: 'resume' },
});

Cancel

Cancel a subscription (takes effect at end of current billing cycle):

typescript
await reponse.subscriptions.manage({
  path: { id: 'sub_xxx' },
  body: { action: 'cancel', reason: 'Too expensive' },
});

Subscription lifecycle

created → trialing → active → paused → active (resumed)
                        ↓         ↓
                    canceled    canceled
                        ↓         ↓
                     expired   expired
StateDescription
createdSubscription record created, awaiting payment setup
trialingIn free trial period, no charges yet
activeRecurring billing and shipments are running
pausedTemporarily paused — no billing or shipments
canceledCanceled — active until end of current cycle
expiredPast the cancellation date, fully terminated

Upgrade / Downgrade

Customers can switch plans mid-cycle:

typescript
await reponse.subscriptions.changePlan({
  path: { id: 'sub_xxx' },
  body: {
    newPlanId: 'plan_yyy',
    proration: 'prorate',  // 'prorate' | 'immediate' | 'next_cycle'
  },
});
Proration modeDescription
prorateCredit remaining days, charge difference immediately
immediateCharge full new plan price now
next_cycleApply new plan at next billing date

Paddle integration

Reponse uses Paddle as the merchant of record for subscription billing:

  1. Connect Paddle in Dashboard → Settings → Payments.
  2. Provide your Paddle Vendor ID and API Key.
  3. Reponse automatically syncs subscription events (payment success, failed, refund) via Paddle webhooks.
Paddle webhook eventReponse action
subscription_payment_succeededMark cycle as paid, trigger shipment
subscription_payment_failedNotify customer, retry per dunning rules
subscription_cancelledUpdate status to canceled
subscription_updatedSync plan and price changes

API reference

EndpointMethodDescription
/v1/subscriptionsGETList subscriptions (filter by status, email)
/v1/subscriptionsPOSTCreate a new subscription
/v1/subscriptions/:idGETGet subscription details
/v1/subscriptions/:id/managePOSTDelay, ship now, pause, resume, or cancel
/v1/subscriptions/:id/change-planPOSTUpgrade or downgrade the plan
/v1/subscription-plansGETList available plans
/v1/subscription-plansPOSTCreate a new plan

Troubleshooting

SymptomCauseFix
"Only active subscriptions can be modified"Subscription is paused or canceledResume or create a new subscription
Payment fails repeatedlyCustomer card expiredSend dunning email via Paddle settings
Shipment not triggeredPaddle webhook not receivedVerify webhook URL in Paddle dashboard
Trial not startingtrial_days set to 0Update the plan with a trial period
Downgrade not applyingWrong proration modeUse next_cycle for end-of-cycle changes
Paddle not connectedMissing API credentialsAdd Vendor ID and API Key in settings
PreviousDiscounts & Promotions
NextKlaviyo Integration